package com.pb.infra.auth.mapper;

import com.pb.infra.auth.entity.byd.Index;
import com.pb.infra.auth.entity.custom.PriviInterCustom;
import com.pb.infra.auth.entity.custom.PriviMenuCustom;
import com.pb.infra.auth.entity.pbsys.CapExtFileUpload;
import com.pb.infra.auth.entity.pbsys.FileDel;
import com.pb.infra.oth.entity.common.DictVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * 通用模块（DAO映射类）
 * @Author:liudebao
 * @Date: 2019/8/8
 */
@Repository
public interface CommonMapper {

    /**
     * 读取标准代码
     * @param paramMap
     * @return
     */
    List<Map<String, Object>> getMaBusiCode(Map<String, Object> paramMap);

    /**
     * 查询码表
     * @param paramMap
     * @return
     */
    List<Map<String, Object>> getBusiTable(Map<String, Object> paramMap);

    /**
     * 读取部门
     * @return
     */
    List<Map<String, Object>> getOrg();

    /**
     * 查询自增序号
     * @param paramMap
     * @return
     */
    List<Map<String, Object>> selectIdNumber(Map<String, Object> paramMap);

    /**
     * 查询自增序号规则
     * @param paramMap
     * @return
     */
    List<Map<String, Object>> selectInitId(Map<String, Object> paramMap);

    /**
     * 保存自增之后的最大序号
     * @param paramMap
     */
    void insertIdNumber(Map<String, Object> paramMap);

    /**
     * 修改最大序号
     * @param paramMap
     */
    void updateIdNumber(Map<String, Object> paramMap);

    /**
     * 读取数据库类型信息
     * @return
     */
    List<Map<String, Object>> selectBaseType();

    /**
     * 查询码值有效标识
     * @param map
     * @return
     */
    List<Map<String, Object>> selectCodeTypeList(Map<String,Object> map);

    /**
     * 查询数据存放类型
     * @return
     */
    List<Map<String, Object>> selectStoreTypeList();

    /**
     * 查询数据源类型
     * @return
     */
    List<Map<String, Object>> selSourceType();

    /**
     * 查询数据源用途
     * @return
     */
    List<Map<String, Object>> selSourceUse();

    /**
     * 查询参数历史数据
     * @return
     */
    List<Map<String, Object>> selHisData();

    /**
     * 查询法人列表
     * @param paramMap
     * @return
     */
    List<Map<String, Object>> selCorpList(Map<String, Object> paramMap);

    /**
     * 当前用户所有法人
     * @param paramMap
     * @return
     */
    List<Map<String, Object>> selDisCorp(Map<String, Object> paramMap);

    /**
     * 查询用户职位信息
     * @param paramMap
     * @return
     */
    List<Map<String, Object>> selUserPosition(Map<String, Object> paramMap);

    /**
     * 查询主职位信息
     * @param paramMap
     * @return
     */
    List<Map<String, Object>> selMainPosition(Map<String, Object> paramMap);

    /**
     * 查询职位信息
     * @param paramMap
     * @return
     */
    List<Map<String, Object>> selPositionInfo(Map<String, Object> paramMap);

    /**
     * 查询所有法人信息
     * @return
     */
    List<Map<String, Object>> selAllCorpList();

    /**
     * 查询法人所属机构
     * @param paramMap
     * @return
     */
    List<Map<String, Object>> getCorpOrg(Map<String, Object> paramMap);

    /**
     * 查询法人列表
     * @param paramMap
     * @return
     */
    List<Map<String, Object>> selRuleCorpList(Map<String, Object> paramMap);

    /**
     * 当前组织所属法人
     * @param orgId
     * @return
     */
    String selOrgByCorp(String orgId);

    /**
     * 查询用户某个职位信息
     * @param paramMap
     * @return
     */
    List<Map<String, Object>> selUserCorpData(Map<String, Object> paramMap);

    /**
     * 查询法人下组织架构
     * @param paramMap
     * @return
     */
    List<Map<String, Object>> getCorpOrg1(Map<String, Object> paramMap);

    /**
     * 当前机构所属法人
     * @param orgId
     * @return
     */
    String selOrgByCorp1(String orgId);

    /**
     * 查询所有数据权限
     * @param paramMap
     * @return
     */
    List<Map<String, Object>> selAuthData(Map<String, Object> paramMap);

    /**
     * 权限类型
     * @param paramMap
     * @return
     */
    List<Map<String, Object>> selTypeData(Map<String, Object> paramMap);

    /**
     * 系统图标
     * @return
     */
    List<Map<String, Object>> selIcons();

    /**
     * 查询权限类型树节点所有父级
     * @param paramMap
     * @return
     */
    List<Map<String, Object>> selAuthData0(Map<String, Object> paramMap);

    List<Map<String, Object>> queryBtnAuth(Map<String, Object> paramMap);

    Map<String,Object> getTableName(Map<String, Object> paramMap);

    List<Map<String,Object>> getCodeList2(Map<String, Object> paramMap);

    List<Map<String,Object>> queryAdminRole(Map<String, Object> paramMap);

    /**
     * 获取码值表维度数据
     * @param code 编码 如SEX
     * @return 字典值
     */
    List<DictVO> getDataDict(@Param("code") String code);

    List<Map<String,Object>> getTableNameList(List<String> StrArray);

    List<Map<String,Object>> getRecurveCode(Map<String,Object> paramMap);

    /**
     * 根据主键删除文件上传记录表数据
     * @author 沈星浩
     * @date 2022/8/16
     */
    void doDelCapExtFileUploadById(String seqno);

    /**
     * 新增附件上传记录表
     * @author 沈星浩
     * @date 2022/8/16
     */
    void doSaveCapExtLoanFileUpload(CapExtFileUpload capExtFileUpload);

    List<Map<String,Object>> getFileList(@Param("acctSeqno") String acctSeqno);


    /**
     * @Description: 删除附件
     * @Author: 周聪聪
     * @Date: 2023/2/14
     */
    void delFile(FileDel fileDel);

    List<PriviInterCustom> selAllInterByUserId(Map<String, Object> map);

    List<Index> selectIndex();

    void insertIndexData(Map<String, Object> map);


    int getMaxVersion();

    List<Map<String, Object>> selectDataByVersion( Map<String, Object> param);
}
